混日子就是虐待自己 ,這比死亡更可怕 --《Doctors》
這次的實作使用H2 Database,H2 是一個由 Java 撰寫的關聯型資料庫,也是一個記憶體資料庫(In memory database),將內容存放在記憶體(內存)當中,而非傳統型資料庫存放在外部記憶體中。
這樣的資料庫設計是為了消除訪問硬碟來減少響應的時間,但由於資料都存放在內存,所以在伺服器重開或故障時會有資料遺失的風險。
(1)在pom.xml添加jar package
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
熱部署模組,修改檔案後,可以立刻重新啟動應用
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
(2)DB環境基礎設置application.yml
 server:
  port: 9100 # 伺服器的port號
spring:
  h2:
    console:
      enabled: true
	datasource:
    url: jdbc:h2:mem:todolist # h2 database 連接位址
    driver-class-name: org.h2.Driver # 配置driver
    username: sa # database 用戶名
    password:  # database 密碼
	jpa:
    database-platform: org.hibernate.dialect.H2Dialect
(3)訪問 h2 資料庫
將應用啟動後,進入http://localhost:9100/h2-console/,可以看見一個 h2 DB 的操作介面,再點Connect就可以查看資料庫,這樣就成功連接一個名為todolist的資料庫了。
資料庫建立完畢後,我們就可以在main -> java → com.xxx.xxxxx → 底下來建立資料類別-Todo.java(下方有資料夾結構表)
|-- src
    |-- main
        |-- java
             |-- com.xxx.xxxxx
                  |-- entity
                    |-- Todo.java
                  |-- TodoListApplication.java # 程式進入點
利用@Entity Annotation Todo class 是一個Entity,@Table映射其至Todo 表,接著聲明這個表格擁有的欄位,最後我們要定義欄位的getter & setter,按下⌘ + N(Mac) 或Ctrl + N(Windows)會跳出選項進行選擇,點擊「Getter and Setter」,會快速幫我們生成setter and getter的方法。
import javax.persistence.*;
@Entity
@Table
public class Todo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Integer id;
    @Column
    String task;
    @Column
    Integer status;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getTask() {
        return task;
    }
    public void setTask(String task) {
        this.task = task;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
}
@Entity 宣告此類是一個實體,並映射至一個數據表,Entity名稱預設為class名稱。
@Table 映射資料表的名稱,預設為Entity名稱。
@Id 聲明為一個主鍵
@GeneratedValue(strategy = GenerationType.IDENTITY) 主鍵生成的策略。
@Column 聲明是個欄位,可以針對此欄位設置參數,如name, unique, length等。
一樣進入http://localhost:9100/h2-console/,Connect 之後可以看到以下畫面,查看表結構。
可以至Java persistence document查看其他Annotation用法
今天實作如何創建資料庫,並讓Entity映射至資料表,明天再來解釋為什麼Entity可以與資料庫對映。